/*
 * @Author: hrg
 * @Date: 2023-05-17 14:58:16
 * @LastEditTime: 2023-05-18 10:00:57
 * @FilePath: \study_go\study04\demo\main.go
 * @Description:
 */
/*
 *                   江城子 . 程序员之歌
 *
 *               十年生死两茫茫，写程序，到天亮。
 *                   千行代码，Bug何处藏。
 *               纵使上线又怎样，朝令改，夕断肠。
 *
 *               领导每天新想法，天天改，日日忙。
 *                   相顾无言，惟有泪千行。
 *               每晚灯火阑珊处，夜难寐，加班狂。
 *
 */

/*
	切片：
		- 定义方式与遍历方式


*/

package main

import "fmt"

func main() {
	// 定义方式1：通过创建好的数组
	var arr = []int{1, 2, 3}
	fmt.Println(arr)
	slice := arr[0:2]
	fmt.Println("查看切片slice的内容：", slice)
	fmt.Println("查看切片slice的长度：", len(slice))
	fmt.Println("查看切片slice的容量：", cap(slice))

	// 定义的方式2：
	// 通过make()内置函数定义，函数的3个参数：1：切片的类型，2：切片的长度，3：切片的容量
	slice1 := make([]int, 3, 6)
	fmt.Println("查看切片slice1的内容：", slice1)
	fmt.Println("查看切片slice1的长度：", len(slice1))
	fmt.Println("查看切片slice1的容量：", cap(slice1))

	// 定义的方式3：
	// 底层类似于make函数
	slice2 := []int{1, 2, 3, 4, 5}
	fmt.Println("查看切片slice2的内容：", slice2)
	fmt.Println("查看切片slice2的长度：", len(slice2))
	fmt.Println("查看切片slice2的容量：", cap(slice2))

	// 遍历slice2：通过for循环遍历
	for i := 0; i < len(slice2); i++ {
		fmt.Println(slice2[i])
	}
	// 通过for range遍历
	for i, v := range slice2 {
		fmt.Printf("i:%d,值为：%d\n", i, v)
	}

}
